/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.modelo.ep;

import br.com.foxinline.modelo.Pessoa;
import br.com.foxinline.modelo.titulodocumento.QualidadeTituloDocumento;
import java.io.Serializable;
import javax.persistence.*;

/**
 *
 * @author cadomeireles
 */
@Entity
public class Parte implements Serializable {
    
    @Id
    @SequenceGenerator(sequenceName="seq_parte", name="seq_parte", allocationSize=1)
    @GeneratedValue(generator="seq_parte",strategy= GenerationType.SEQUENCE)
    private Long id;
    
    @OneToOne(cascade=CascadeType.ALL)
    private Pessoa pessoa;

    @ManyToOne
    private Qualidade qualidade;

    @ManyToOne
    private QualidadeTituloDocumento qualidadeTituloDocumento;
    
    public Parte() {}

    public Parte(Long id, Pessoa pessoa, Qualidade qualidade, QualidadeTituloDocumento qualidadeTituloDocumento) {
        this.id = id;
        this.pessoa = pessoa;
        this.qualidade = qualidade;
        this.qualidadeTituloDocumento = qualidadeTituloDocumento;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public Qualidade getQualidade() {
        return qualidade;
    }

    public void setQualidade(Qualidade qualidade) {
        this.qualidade = qualidade;
    }

    public QualidadeTituloDocumento getQualidadeTituloDocumento() {
        return qualidadeTituloDocumento;
    }

    public void setQualidadeTituloDocumento(QualidadeTituloDocumento qualidadeTituloDocumento) {
        this.qualidadeTituloDocumento = qualidadeTituloDocumento;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Parte other = (Parte) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if (this.pessoa != other.pessoa && (this.pessoa == null || !this.pessoa.equals(other.pessoa))) {
            return false;
        }
        if (this.qualidade != other.qualidade && (this.qualidade == null || !this.qualidade.equals(other.qualidade))) {
            return false;
        }
        if (this.qualidadeTituloDocumento != other.qualidadeTituloDocumento && (this.qualidadeTituloDocumento == null || !this.qualidadeTituloDocumento.equals(other.qualidadeTituloDocumento))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 89 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 89 * hash + (this.pessoa != null ? this.pessoa.hashCode() : 0);
        hash = 89 * hash + (this.qualidade != null ? this.qualidade.hashCode() : 0);
        hash = 89 * hash + (this.qualidadeTituloDocumento != null ? this.qualidadeTituloDocumento.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Parte{" + "id=" + id + ", pessoa=" + pessoa + ", qualidade=" + qualidade + ", qualidadeTituloDocumento=" + qualidadeTituloDocumento + '}';
    }

}
